package service

import (
	"TodoList/cache"
	"TodoList/dao"
	"TodoList/logm"
	"TodoList/models"
	"TodoList/serializer"
)

// ListTodoService 事项列表服务
type ListTodoService struct {
}

// List 查询事项列表函数
func (service *ListTodoService) List() serializer.Response {
	var todos []models.Todo
	total := int64(0)

	// 查询总条数
	if err := dao.PgDB.Model(models.Todo{}).Count(&total).Error; err != nil {
		logm.Sad.Println("query total failed", err)
		return serializer.Response{
			Code:    501,
			Message: "服务器错误，请联系管理员",
			Error:   err.Error(),
		}
	}
	//数据库中查询网站列表
	res := dao.PgDB.Find(&todos)
	if res.Error != nil {
		logm.Sad.Println("query list failed", res.Error.Error())
		return serializer.Response{
			Code:    501,
			Message: "服务器错误，请联系管理员",
			Error:   res.Error.Error(),
		}
	}
	//查询事项的历史数量
	count := cache.Count()
	logm.Smile.Println("get list success")
	return serializer.BuildListResponse(todos, uint(total), uint(count))
}
